Data storage devices typically employ error correction codes (ECCs) to encode and subsequently decode data in a manner that corrects data corruption that may have occurred during storage. Error correction codes typically fall into one of two classes, those that produce hard decision information and those that produce soft decision information. A hard decision decoding process produces output data in which each datum is one of a fixed set of values (e.g., a zero or a one in a binary code). By contrast, a soft decision decoding process produces output data in which each datum may be any value within a given range (e.g., a value between zero and one) that represents a reliability or probability that the original datum was a particular value. As an example, a value of 0.7 may indicate that the original datum was probably a one while a value of 0.2 may indicate that the original datum was probably a zero. Accordingly, soft decision decoding provides a richer information set than hard decision decoding. However, the amount of processing logic used to implement soft decision decoding is typically greater than that used to implement hard decision decoding, especially as the size of the data block to be encoded or decoded increases.